package net.aiion.weave.spi.painters.stream.xhtml;

import net.aiion.weave.spi.naming.annotations.NotScoped;
import net.aiion.weave.spi.painters.stream.StreamPaintBrush;
import net.aiion.weave.spi.xml.XmlQualifiedName;

@NotScoped
public interface XhtmlPaintBrush extends StreamPaintBrush
{
    XmlQualifiedName createQualifiedName(String aNamespaceURI, String aLocalName);

    XmlQualifiedName createQualifiedName(String aNamespaceURI, String aLocalName, String aPrefix);

    void declareDocumentType(int aDocumentTypeDeclarationId);

    void declareDocumentType(String aDocumentTypeDeclaration);

    void startElement(String aLocalName);

    void startElement(String aNamespaceURI, String aLocalName);

    void startElement(String aNamespaceURI, String aLocalName, String aPrefix);

    void startElement(XmlQualifiedName aXmlQualifiedName);

    void addAttribute(String aLocalName, String aValue);

    void addAttribute(String aNamespaceURI, String aLocalName, String aValue);

    void addAttribute(String aNamespaceURI, String aLocalName, String aPrefix, String aValue);

    void addAttribute(XmlQualifiedName aXmlQualifiedName, String aValue);

    void writeCharacters(String aCharacters);

    void writeCharacters(String aCharacters, int aCharactersDataType);

    void endElement();
}
